# 
# Created by francklinson on 2021/7/31 AT 22:24.
#

# 给定一个长度为 n 的 非空 整数数组，每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。
from typing import List


# 每次操作可以使数组里n - 1个元素+1，最后让数组元素相等。
#
# 简单思考一下，就能得出让数组n - 1个元素+1，实际上就是让剩下的那个元素-1
#
# 我们可以贪心的找出最小的元素，让所有元素不断-1和它相同即可


class Solution:
    def minMoves(self, nums: List[int]) -> int:
        ans = 0
        nums.sort()
        for i in range(len(nums) - 1, 0, -1):
            ans += nums[i] - nums[0]
        return ans

    def minMoves2(self, nums):
        return sum(nums) - min(nums) * len(nums)


if __name__ == '__main__':
    sol = Solution()
    print(sol.minMoves([1, 2, 3]))
    print(sol.minMoves2([1, 2, 3]))
    print(sol.minMoves([1, 2, 7, 9]))
    print(sol.minMoves2([1, 2, 7, 9]))
